import paramiko
import base64
import io
import time

key_str = """
使用真实密钥
"""

# 创建 SSH 客户端
ssh = paramiko.SSHClient()

# 自动添加主机密钥（生产环境中应更安全地处理）
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

key_data = base64.b64decode(key_str.strip())
key = paramiko.RSAKey.from_private_key(io.StringIO(key_data.decode("utf-8")))

# 连接到服务器
ssh.connect("192.168.6.127", port=22, username="root", password="None", timeout=10, pkey=key)

# 创建交互式shell
channel = ssh.invoke_shell(term="xterm-256color")

# 设置超时（可选）
channel.settimeout(5)
try:
    # 初始输出处理
    while not channel.recv_ready():
        time.sleep(0.1)
    welcome = channel.recv(1024).decode('utf-8')
    print(welcome, end='')

    while True:
        # 打印当前命令提示符（如果有）
        if channel.recv_ready():
            output = channel.recv(1024).decode('utf-8')
            print(output, end='')

        # 获取用户输入
        command = input().strip()
        if command.lower() in ['exit', 'quit']:
            channel.send('exit\n')
            break

        # 发送命令
        channel.send(command + '\n')

        # 等待命令执行完成（通过检测新的提示符）
        time.sleep(0.5)  # 根据网络情况调整
        while True:
            if channel.recv_ready():
                output = channel.recv(1024).decode('utf-8')
                if command+"\r\n" in output:
                    output = output.replace(command+"\r\n", "")
                print(output, end='')
            else:
                break

finally:
    channel.close()
    ssh.close()
